#include <iostream>
#include "TaskQueue.h"

bool TaskQueue::empty()
{
    return _que.size() == 0;
}
bool TaskQueue::full()
{
    return _capacity == _que.size();
}
void TaskQueue::push(const int &value)
{
    unique_lock<mutex> ul(_mutex);
    if (full())
    {
        // 1.判断是否为满
        // 2.满则睡眠
        _notFull.wait(ul);
    }
    // 不满就添加元素
    _que.push(value);
    //唤醒消费者
    _notEmpty.notify_one();
}
int TaskQueue::pop()
{
    unique_lock<mutex> ul(_mutex);
    if(empty()){
        _notEmpty.wait(ul);
    }
    int temp = _que.front();
    _que.pop();
    _notFull.notify_one();
    return temp;
}
